package com.ys.day29.Reflect.p7使用Reflect直接创建对象;

import com.ys.day29.Reflect.p6Reflect与Constructor对象.Student;

/**
 * 描述: p7使用Reflect创建对象
 *
 *  Java 创建对象的方式 有 3种,
 *  1:new 对象
 *  2:克隆对象 , Object 克隆   IO流克隆对象 都是深拷贝
 *  3:反射创建对象
 *
 * @author CodeYang
 * @version 2021/1/11 21:13
 */
public class P1使用Reflect直接创建对象 {

    /**
     * 场景：我定义一个Student类，有id，stuName属性，先获取Student的Class对象，然后调用newInstance()方法创建对象。
     * @param args
     */
    public static void main(String[] args) {

        Class<Student> studentClass = Student.class;

        try {
            Student student = studentClass.newInstance();
            // Student{stuId=0, name='null', sex='null'} 成功创建一个对象,并且调用的是无参构造方法,
            // 但是通过反射得到 Class 类对象.newInstance();
            // 注意: 该方法在JDK1.8之后就会过期
            System.out.println(student);
        } catch (InstantiationException | IllegalAccessException e) {
            e.printStackTrace();
        }


    }
}
